From a0e4889748886d4de46211a1ae76106e0d10cddf Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Tue, 18 Nov 2003 19:57:14 +0000 Subject: [PATCH] don't try to fetch the child back, since we do know that it is already Tue Nov 18 20:51:38 2003 Kristian Rietveld * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_row_deleted): don't try to fetch the child back, since we do know that it is already gone by now (#126493, Marco Pesenti Gritti). --- ChangeLog | 6 ++ ChangeLog.pre-2-10 | 6 ++ ChangeLog.pre-2-4 | 6 ++ ChangeLog.pre-2-6 | 6 ++ ChangeLog.pre-2-8 | 6 ++ gtk/gtktreemodelfilter.c | 121 ++++++++++++++++++--------------------- 6 files changed, 86 insertions(+), 65 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7dc47252ba..6033c0b0f6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Tue Nov 18 20:51:38 2003 Kristian Rietveld + + * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_row_deleted): don't + try to fetch the child back, since we do know that it is already + gone by now (#126493, Marco Pesenti Gritti). + Tue Nov 18 19:47:59 2003 Kristian Rietveld Fixes based on comments from Owen Taylor, #125264. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 7dc47252ba..6033c0b0f6 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +Tue Nov 18 20:51:38 2003 Kristian Rietveld + + * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_row_deleted): don't + try to fetch the child back, since we do know that it is already + gone by now (#126493, Marco Pesenti Gritti). + Tue Nov 18 19:47:59 2003 Kristian Rietveld Fixes based on comments from Owen Taylor, #125264. diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 7dc47252ba..6033c0b0f6 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,9 @@ +Tue Nov 18 20:51:38 2003 Kristian Rietveld + + * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_row_deleted): don't + try to fetch the child back, since we do know that it is already + gone by now (#126493, Marco Pesenti Gritti). + Tue Nov 18 19:47:59 2003 Kristian Rietveld Fixes based on comments from Owen Taylor, #125264. diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 7dc47252ba..6033c0b0f6 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,9 @@ +Tue Nov 18 20:51:38 2003 Kristian Rietveld + + * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_row_deleted): don't + try to fetch the child back, since we do know that it is already + gone by now (#126493, Marco Pesenti Gritti). + Tue Nov 18 19:47:59 2003 Kristian Rietveld Fixes based on comments from Owen Taylor, #125264. diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 7dc47252ba..6033c0b0f6 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +Tue Nov 18 20:51:38 2003 Kristian Rietveld + + * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_row_deleted): don't + try to fetch the child back, since we do know that it is already + gone by now (#126493, Marco Pesenti Gritti). + Tue Nov 18 19:47:59 2003 Kristian Rietveld Fixes based on comments from Owen Taylor, #125264. diff --git a/gtk/gtktreemodelfilter.c b/gtk/gtktreemodelfilter.c index d168c763eb..f8827691fe 100644 --- a/gtk/gtktreemodelfilter.c +++ b/gtk/gtktreemodelfilter.c @@ -1430,88 +1430,79 @@ gtk_tree_model_filter_row_deleted (GtkTreeModel *c_model, c_path, FALSE, FALSE); + if (!path) { - path = gtk_real_tree_model_filter_convert_child_path_to_path (filter, - c_path, - FALSE, - TRUE); + /* fixup the offsets */ + GtkTreePath *real_path; - if (!path) - { - /* fixup the offsets */ - GtkTreePath *real_path; + if (!filter->priv->root) + return; - if (!filter->priv->root) - return; + level = FILTER_LEVEL (filter->priv->root); - level = FILTER_LEVEL (filter->priv->root); + /* subtract vroot if necessary */ + if (filter->priv->virtual_root) + { + real_path = gtk_tree_model_filter_remove_root (c_path, + filter->priv->virtual_root); + /* we don't handle this */ + if (!real_path) + return; + } + else + real_path = gtk_tree_path_copy (c_path); - /* subtract vroot if necessary */ - if (filter->priv->virtual_root) + i = 0; + if (gtk_tree_path_get_depth (real_path) - 1 >= 1) + { + while (i < gtk_tree_path_get_depth (real_path) - 1) { - real_path = gtk_tree_model_filter_remove_root (c_path, - filter->priv->virtual_root); - /* we don't handle this */ - if (!real_path) - return; - } - else - real_path = gtk_tree_path_copy (c_path); + gint j; - i = 0; - if (gtk_tree_path_get_depth (real_path) - 1 >= 1) - { - while (i < gtk_tree_path_get_depth (real_path) - 1) + if (!level) { - gint j; - - if (!level) - { - /* we don't cover this */ - gtk_tree_path_free (real_path); - return; - } - - elt = bsearch_elt_with_offset (level->array, - gtk_tree_path_get_indices (real_path)[i], - &j); - - if (!elt || !elt->children) - { - /* parent is filtered out, so no level */ - gtk_tree_path_free (real_path); - return; - } - - level = elt->children; - i++; + /* we don't cover this */ + gtk_tree_path_free (real_path); + return; } - } - offset = gtk_tree_path_get_indices (real_path)[gtk_tree_path_get_depth (real_path) - 1]; - gtk_tree_path_free (real_path); + elt = bsearch_elt_with_offset (level->array, + gtk_tree_path_get_indices (real_path)[i], + &j); - if (!level) - return; + if (!elt || !elt->children) + { + /* parent is filtered out, so no level */ + gtk_tree_path_free (real_path); + return; + } - /* we need: - * - the offset of the removed item - * - the level - */ - for (i = 0; i < level->array->len; i++) - { - elt = &g_array_index (level->array, FilterElt, i); - if (elt->offset > offset) - elt->offset--; - if (elt->children) - elt->children->parent_elt = elt; + level = elt->children; + i++; } + } - return; + offset = gtk_tree_path_get_indices (real_path)[gtk_tree_path_get_depth (real_path) - 1]; + gtk_tree_path_free (real_path); + + if (!level) + return; + + /* we need: + * - the offset of the removed item + * - the level + */ + for (i = 0; i < level->array->len; i++) + { + elt = &g_array_index (level->array, FilterElt, i); + if (elt->offset > offset) + elt->offset--; + if (elt->children) + elt->children->parent_elt = elt; } - emit_signal = FALSE; + return; } gtk_tree_model_get_iter (GTK_TREE_MODEL (data), &iter, path); -- 2.30.2